iT邦幫忙

DAY 19
0

Java Web的設計與應用系列 第 19

Day19 Vaadin 探討 Mock Test

  • 分享至 

  • xImage
  •  

準備技術:

  1. Vaadin
  2. JUnit and Mock

為什麼會有Mock?

  1. 如果一個類別的建構子呼叫了外部物件,怎麼測這情況?該物件有可能是 Static?
  2. 如果是Web Service?

Mockito (the combination of the PowerMock and Mockito frameworks is called PowerMockito) 就是專門做這件事情。

先看程式。

public class SystemStatusService {
public static String getValue() {
return "Offline";
}
}

public class SystemStatusLayout extends HorizontalLayout {
private Label lblSystemStatus;
public SystemStatusLayout() {
String value = SystemStatusService.getValue();
lblSystemStatus = new Label(value);
addComponent(lblSystemStatus);
}
public Label getLblSystemStatus() {
return lblSystemStatus;
}
}

這是我們要測試的類別。

測試程式如下:我們透過一個@RunWith(PowerMockRunner.class) 呼叫測試框架,能夠Mock進去。注意其中一行 PowerMockito.mockStatic(SystemStatusService.class) 就是測試Static方法。

@RunWith(PowerMockRunner.class)
@PrepareForTest({SystemStatusService.class})
public class SystemStatusLayoutTest {
private SystemStatusLayout layout;
@Before
public void setUp() throws Exception {
PowerMockito.mockStatic(SystemStatusService.class);
Mockito.when(SystemStatusService.getValue()).
thenReturn("Online");
layout = new SystemStatusLayout();
}
@Test
public void isSystemStatusShown() {
Label lblSystemStatus = layout.getLblSystemStatus();
String value = lblSystemStatus.getValue();
Assert.assertEquals("Online", value);
}
}

測試結果,如圖。

參考資料

  1. Vaadin 官網
  2. Vaadin書籍
  3. JUnit in Action
  4. Mockito

Day19 結束


上一篇
Day18 Vaadin 探討 MVP
下一篇
Day20 探討Tomcat Container
系列文
Java Web的設計與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言